const numberToChineseWords = (number) => {
  const units = ['', '一', '二', '三', '四', '五', '六', '七', '八', '九']; // 数字对应的中文大写
  const tens = ['', '十', '二十', '三十', '四十', '五十', '六十', '七十', '八十', '九十']; // 十位数字对应的中文大写
  const specialCases = {
    10: '十', // 特殊情况，十的中文大写为"十"
    100: '百', // 特殊情况，百的中文大写为"百"
    1000: '千', // 特殊情况，千的中文大写为"千"
    10000: '万' // 特殊情况，万的中文大写为"万"
  };

  if (number === 0) {
    return '零'; // 零的中文大写为"零"
  }

  if (number < 10) {
    return units[number]; // 小于10的数字直接返回对应的中文大写
  }

  if (number < 20) {
    return specialCases[10] + units[number % 10]; // 十位数字为1的特殊情况，例如17为"十七"
  }

  if (number < 100) {
    const digit1 = Math.floor(number / 10); // 十位数字
    const digit2 = number % 10; // 个位数字
    return tens[digit1] + (digit2 ? units[digit2] : ''); // 拼接十位和个位的中文大写
  }

  if (number < 10000) {
    const digit1 = Math.floor(number / 1000); // 千位数字
    const digit2 = Math.floor((number % 1000) / 100); // 百位数字
    const digit3 = Math.floor((number % 100) / 10); // 十位数字
    const digit4 = number % 10; // 个位数字
    let result = '';
    result += digit1 ? units[digit1] + specialCases[1000] : ''; // 拼接千位的中文大写
    result += digit2 ? units[digit2] + specialCases[100] : ''; // 拼接百位的中文大写
    result += digit3 ? (digit3 === 1 ? specialCases[10] : units[digit3]) + specialCases[10] : ''; // 拼接十位的中文大写
    result += digit4 ? units[digit4] : ''; // 拼接个位的中文大写
    return result;
  }

  return '数字超出范围。'; // 数字超出范围时返回错误提示
};

export default numberToChineseWords
